import { IoTGatewayProtocolTypeEnum } from '@/enums/iot/ioTGatewayProtocolTypeEnum';
import { IoTPlatformTypeEnum } from '@/enums/iot/ioTPlatformTypeEnum';

/** 输入DTO：IoT网关 */
export interface GatewayInputDto {
  /** 编号 */
  Id: string | bigint;

  /** 网关名称 */
  Name: string;
  /** 协议类型 */
  ProtocolType: IoTGatewayProtocolTypeEnum;
  /** 服务器 */
  Server: string;
  /** 端口 */
  Port: number;
  /** 认证身份 */
  Identity: string;
  /** 认证密钥 */
  Password: string;
  /** 平台类型 */
  PlatformType: IoTPlatformTypeEnum;

  /** 白名单 */
  Whitelist: string[];
  /** 黑名单 */
  Blacklist: string[];

  /** 启用 */
  Enabled: boolean;
  /** 超时期限(秒) */
  Timeout: number;

  /** 备注 */
  Remark: string;
}

/** 输出DTO：IoT网关 */
export interface GatewayOutputDto extends GatewayInputDto {
  /** 创建者编号 */
  CreatorId: string | bigint | null | undefined;
  /** 创建者名称 */
  CreatorName: string;
  /** 创建者昵称 */
  CreatorNickname: string;
  /** 创建时间 */
  CreatedTime: Date;

  /** 更新者编号 */
  UpdaterId: string | bigint | null | undefined;
  /** 更新者名称 */
  UpdaterName: string;
  /** 更新者昵称 */
  UpdaterNickname: string;
  /** 更新时间 */
  UpdatedTime?: Date | null;
}

/** IoT网关客户端DTO */
export interface GatewayClientDto {
  /** 编号 */
  Id: string;

  /** 网关编号 */
  GatewayId: string | bigint;
  /** 网关名称 */
  GatewayName: string;
  /** 协议类型 */
  ProtocolType: IoTGatewayProtocolTypeEnum;
  /** 平台类型 */
  PlatformType: IoTPlatformTypeEnum;

  /** 终结点 */
  Endpoint: string;
  /** 版本 */
  Version: string;

  /** 连接时间 */
  ConnectedTime: Date;
  /** 最后接收包时间 */
  LastPacketReceivedTime: Date;
  /** 最后发送包时间 */
  LastPacketSentTime: Date;

  /** 收包数 */
  ReceivedPackets: string | bigint;
  /** 发包数 */
  SentPackets: string | bigint;
  /** 收字节数 */
  ReceivedBytes: string | bigint;
  /** 发字节数 */
  SentBytes: string | bigint;
  /** 收消息数 */
  ReceivedMessages: string | bigint;
  /** 发消息数 */
  SentMessages: string | bigint;
  /** 未决消息数 */
  PendingMessages: string | bigint;
}
